.\"***************************************************************************
.\" Copyright 2020-2023,2024 Thomas E. Dickey                                *
.\" Copyright 2007-2014,2015 Free Software Foundation, Inc.                  *
.\"                                                                          *
.\" Permission is hereby granted, free of charge, to any person obtaining a  *
.\" copy of this software and associated documentation files (the            *
.\" "Software"), to deal in the Software without restriction, including      *
.\" without limitation the rights to use, copy, modify, merge, publish,      *
.\" distribute, distribute with modifications, sublicense, and/or sell       *
.\" copies of the Software, and to permit persons to whom the Software is    *
.\" furnished to do so, subject to the following conditions:                 *
.\"                                                                          *
.\" The above copyright notice and this permission notice shall be included  *
.\" in all copies or substantial portions of the Software.                   *
.\"                                                                          *
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
.\"                                                                          *
.\" Except as contained in this notice, the name(s) of the above copyright   *
.\" holders shall not be used in advertising or otherwise to promote the     *
.\" sale, use or other dealings in this Software without prior written       *
.\" authorization.                                                           *
.\"***************************************************************************
.\"
.\" $Id: curs_opaque.3x,v 1.43 2024/03/16 15:35:01 tom Exp $
.TH curs_opaque 3X 2024-03-16 "ncurses 6.5" "Library calls"
.ie \n(.g \{\
.ds `` \(lq
.ds '' \(rq
.\}
.el \{\
.ie t .ds `` ``
.el   .ds `` ""
.ie t .ds '' ''
.el   .ds '' ""
.\}
.SH NAME
\fB\%is_cleared\fP,
\fB\%is_idlok\fP,
\fB\%is_idcok\fP,
\fB\%is_immedok\fP,
\fB\%is_keypad\fP,
\fB\%is_leaveok\fP,
\fB\%is_nodelay\fP,
\fB\%is_notimeout\fP,
\fB\%is_pad\fP,
\fB\%is_scrollok\fP,
\fB\%is_subwin\fP,
\fB\%is_syncok\fP,
\fB\%wgetdelay\fP,
\fB\%wgetparent\fP,
\fB\%wgetscrreg\fP \-
obtain \fIcurses\fR window properties
.SH SYNOPSIS
.nf
\fB#include <curses.h>
.PP
\fBbool is_cleared(const WINDOW *\fIwin\fP);
\fBbool is_idcok(const WINDOW *\fIwin\fP);
\fBbool is_idlok(const WINDOW *\fIwin\fP);
\fBbool is_immedok(const WINDOW *\fIwin\fP);
\fBbool is_keypad(const WINDOW *\fIwin\fP);
\fBbool is_leaveok(const WINDOW *\fIwin\fP);
\fBbool is_nodelay(const WINDOW *\fIwin\fP);
\fBbool is_notimeout(const WINDOW *\fIwin\fP);
\fBbool is_pad(const WINDOW *\fIwin\fP);
\fBbool is_scrollok(const WINDOW *\fIwin\fP);
\fBbool is_subwin(const WINDOW *\fIwin\fP);
\fBbool is_syncok(const WINDOW *\fIwin\fP);
.PP
\fBWINDOW * wgetparent(const WINDOW *\fIwin\fP);
\fBint wgetdelay(const WINDOW *\fIwin\fP);
\fBint wgetscrreg(const WINDOW *\fIwin\fP, int *\fItop\fP, int *\fIbottom\fP);
.fi
.SH DESCRIPTION
\fI\%ncurses\fP provides functions returning properties of a
\fI\%WINDOW\fP structure,
allowing it to be \*(``opaque\*('' if
the application defines the \fB\%NCURSES_OPAQUE\fP preprocessor symbol.
\fIOpacity\fP in this sense means that the members of \fIstruct\fP data
types are not directly accessible
(for instance,
through \*(``.\*('' or \*(``\->\*('' operators),
but instead must be queried and/or set via library functions.
Advantages of opacity include greater abstraction and improved
management of concurrent accesses to data structures,
keeping object states coherent.
.TP
\fBis_cleared\fP
returns the value set by \fB\%clearok\fP(3X).
.TP
\fBis_idcok\fP
returns the value set by \fB\%idcok\fP(3X).
.TP
\fBis_idlok\fP
returns the value set by \fB\%idlok\fP(3X).
.TP
\fBis_immedok\fP
returns the value set by \fB\%immedok\fP(3X).
.TP
\fBis_keypad\fP
returns the value set by \fB\%keypad\fP(3X).
.TP
\fBis_leaveok\fP
returns the value set by \fB\%leaveok\fP(3X).
.TP
\fBis_nodelay\fP
returns the value set by \fB\%nodelay\fP(3X).
.TP
\fBis_notimeout\fP
returns the value set by \fB\%notimeout\fP(3X).
.TP
\fBis_pad\fP
returns \fBTRUE\fP if the window is a pad;
that is,
it was created by \fB\%newpad\fP(3X).
.TP
\fBis_scrollok\fP
returns the value set by \fB\%scrollok\fP(3X).
.TP
\fBis_subwin\fP
returns \fBTRUE\fP if the window is a subwindow,
that is,
it was created by \fB\%subwin\fP(3X) or \fB\%derwin\fP(3X).
.TP
\fBis_syncok\fP
returns the value set by \fB\%syncok\fP(3X).
.TP
\fBwgetdelay\fP
returns the delay timeout set by \fB\%wtimeout\fP(3X).
.TP
\fBwgetparent\fP
returns the parent \fI\%WINDOW\fP pointer for subwindows,
or \fBNULL\fP for windows having no parent.
.TP
\fBwgetscrreg\fP
stores the the top and bottom rows for the scrolling margin set by
\fB\%wsetscrreg\fP(3X) in the corresponding arguments,
returning \fBERR\fP upon failure and \fBOK\fP upon successful
completion.
.SH RETURN VALUE
These functions return \fBTRUE\fP or \fBFALSE\fP except as noted.
.SH NOTES
\fI\%ncurses\fP provides both a C function and a preprocessor macro for
each function documented in this page.
.SH PORTABILITY
These routines are specific to \fI\%ncurses\fP.
They were not supported on Version 7, BSD or System V implementations.
It is recommended that any code depending on \fI\%ncurses\fP extensions
be conditioned using \fB\%NCURSES_VERSION\fP.
.SH SEE ALSO
\fB\%curses\fP(3X),
\fB\%curs_inopts\fP(3X),
\fB\%curs_outopts\fP(3X),
\fB\%curs_threads\fP(3X),
\fB\%curs_window\fP(3X)
